/*
 * Mural.cpp
 *
 *  Created on: Jan 14, 2013
 *      Author: raysue
 */

#include "game/entities/Mural.h"
#include "component/Doodle.h"
#include "util/Helpers.h"
#include "game/towers/Catodix.h"
#include "game/towers/Sulfurix.h"
#include "core/GameConteiner.h"

using namespace eats_helpers;
using namespace eats_core;

int const Mural::CATODIX_SELECTED = 1;

Mural::Mural(SDL_Surface * surface, int posX, int posY): GameObject(surface, posX, posY)
{
	workingSurf = surface;
	seletorDeTorresStr = "/opt/attacks/resources/barraSelecaoTorres";

	torreTipo1Str = Catodix::getImgPath();
	//torreTipo2Str =
	//torreTipo3Str =

	seletorDeTorresPoint = position;


	//FIXME GRANDE DRAGAO BRANCO DAS INICIALIZACOES NO LUGAR ERRADO
	torreTipo1Point = new Point;
	torreTipo1Point->x = (seletorDeTorresPoint->x) + 20;
	torreTipo1Point->y = (seletorDeTorresPoint->y) + TowersIndex::CATODIX_TILE_SIZE;

	torreTipo2Point = new Point;
	torreTipo2Point->x = (seletorDeTorresPoint->x) + 100;
	torreTipo2Point->y = (seletorDeTorresPoint->y) + TowersIndex::SUFURIX_TILE_SIZE;

}

Mural::~Mural() {
	// TODO Auto-generated destructor stub
}

bool Mural::update()
{
	*_gold_meter = StringHelper::toString(GameConteiner::getInstance()->getGameManager()->_current_state->goldMeter);
	return GameObject::update();
}

bool Mural::render()
{
	GameObject::render();
}

bool Mural::setUp()
{

	_gold_meter = new string;
	*_gold_meter = StringHelper::toString(GameConteiner::getInstance()->getGameManager()->_current_state->goldMeter);

	if(!workingSurf)
	{
		std::cout << "|ERROR| Surface de parametro está nula ou corrempida para o mural (HUD) " << std::endl;
		return false;
	}

	seletorDeTorres  = new Animation( workingSurf, seletorDeTorresStr.append( PathHelper::resourceResolution() ).append(".png") ,
			&seletorDeTorresPoint->x , &seletorDeTorresPoint->y, false, 1, 320);

	torreTipo1 = new Animation(workingSurf, torreTipo1Str.append( PathHelper::resourceResolution() ).append(".png") ,
			&torreTipo1Point->x , &torreTipo1Point->y, false, 1 , TowersIndex::CATODIX_TILE_SIZE);
	torreTipo1 -> _canonical_name = "Seletor Catodix";
	torreTipo1 -> _id = "Seletor Catodix";

	torreTipo2 = new Animation(workingSurf, Sulfurix::getImgPath().append( PathHelper::resourceResolution() ).append(".png") ,
				&torreTipo2Point->x , &torreTipo2Point->y, false, 1 , TowersIndex::SUFURIX_TILE_SIZE);
	torreTipo2 -> _canonical_name = "Seletor Sulfurix";
	torreTipo2 -> _id = "Seletor Sulfurix";

	Point * pp = new Point;
	pp->x = CoordinatesHelper::bottonRightWidth(100);
	pp->y = 50;

	gold = new Text(workingSurf,"/opt/attacks/resources/native.ttf",16,_gold_meter,pp);

	if(gold->setUp() == false){
		std::cout << "|ERROR| Não foi possível carregar o texto para o gold" << std::endl;
		return false;
	}


	if(seletorDeTorres->setUp() == false)
	{
		std::cout << "|ERROR| Não foi possível carregar a imagem do seletor de torres" << std::endl;
		return false;
	}

	if(torreTipo1->setUp() == false)
	{
		std::cout << "|ERROR| Não foi possível carregar a imagem da torre tipo 1" << std::endl;
		return false;
	}

	if(torreTipo2->setUp() == false)
	{
		std::cout << "|ERROR| Não foi possível carregar a imagem da torre tipo 2" << std::endl;
		return false;
	}

	addComponent(seletorDeTorres);
	addComponent(torreTipo1);
	addComponent(torreTipo2);
	addComponent(gold);

	enableComponent(seletorDeTorres);
	enableComponent(torreTipo1);
	enableComponent(torreTipo2);
	enableComponent(gold);

	return true;

}

bool Mural::tearDown()
{
	//delete(torreTipo1Point);
	//delete(seletorDeTorresPoint);

	return GameObject::tearDown();

	//delete(seletorDeTorres);
	//delete(torreTipo1);
}

int Mural::getSelectedTower(Point p){

	if(CoordinatesHelper::isOnRect(*torreTipo1Point,TowersIndex::CATODIX_TILE_SIZE,TowersIndex::CATODIX_TILE_SIZE,p)){
		return CATODIX_SELECTED;
	}

	return 0;
}


